DI
suporte scripts

(resolvido) Falar ao conjurar magia

Por diarmaint, 26 de jan. de 2017 em Resolvidos

otserv
5
1.3k
diarmaintD
26 de janeiro de 2017 às 02:30

Galera, meu servidor não fala o nome da magia quando uso ela, ele não pega o instant name do spells.xml..

estava observando que dentro de uma magia aqui, tenho uma função que aparece uma frase quando fala a magia,

 

 


function hats(cid)
if getPlayerLookDir(cid) == 1 then   
                
doCombat(cid, combat1, numberToVariant(cid))
doCombat(cid, combat10, numberToVariant(cid))
doCombat(cid, combat100, numberToVariant(cid))
doPlayerSay(cid, 'teste1', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 2 then   
               
         doCombat(cid, combat4, numberToVariant(cid))
doCombat(cid, combat40, numberToVariant(cid))
doCombat(cid, combat400, numberToVariant(cid))
doPlayerSay(cid, 'teste2!', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 3 then   
                 
         doCombat(cid, combat2, numberToVariant(cid))
doCombat(cid, combat20, numberToVariant(cid))
doCombat(cid, combat200, numberToVariant(cid))
doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 0 then   
                 
         doCombat(cid, combat3, numberToVariant(cid))
doCombat(cid, combat30, numberToVariant(cid))
doCombat(cid, combat300, numberToVariant(cid))
  doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 
      end
end
 

 

porém essa função só tem em magia wave, e nela pra cada lado dá pra configurar uma fala diferente, quero colocar isso em poder que seja target

então tentei colocar parte dela depois do ultimo onCastSpell

ficando assim

 

function onCastSpell(cid, var)
doPlayerSay(cid, 'teste1!', TALKTYPE_ORANGE_1) 
local waittime = 7 -- Tempo de exhaustion
local storage = 115818
if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end

até aí dá certo, quando uso a magia ele fala  "teste1!" só que a magia em exhaust continua falando se eu apertar o botão pra soltar ela, tem como colocar essa função pra que o personagem só fale "teste1" quando eu realmente solte a magia?

 

EDIT------

Acho que consegui aqui galera, depois de muitas tentativas,

Antes do ultimo function onCastSpell(cid, var)

Eu adicionei um novo evento só com a função da fala

 function dmark(cid)   doPlayerSay(cid, 'fala...!', TALKTYPE_ORANGE_1)          end

e antes do ultimo 

return true OU return doCombat

addEvent(dmark,0,cid)

Exemplo de spell target.

 

 



local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 131)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 6)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5.5, 0, -5.6, 0)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 3000)
setConditionParam(condition, CONDITION_PARAM_SPEED, -200)
setConditionFormula(condition, -1.9, 0, -1.9, 0)
setCombatCondition(combat, condition)

 

 function dmark(cid)
   doPlayerSay(cid, 'Dynamic Marking!', TALKTYPE_ORANGE_1) 
      end

 

 function onCastSpell(cid, var)
 local waittime = 3 -- Tempo de exhaustion
local storage = 115824
if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end


 exhaustion.set(cid, storage, waittime)
     addEvent(dmark,0,cid)
return doCombat(cid, combat, var)

end

 

Não sei se é a forma mais certa de fazer (Se alguém souber uma maneira mais fácil de fazer isso ajuda aí) isso, não ta dando nenhum problema na distro, tirando o trabalho que é adicionar cada event diferente em cada spell se não a fala se repete.

 

 

 

 

Editado Janeiro 26 por diarmaint

rorixR
26 de janeiro de 2017 às 05:10
2 horas atrás, diarmaint disse:

Galera, meu servidor não fala o nome da magia quando uso ela, ele não pega o instant name do spells.xml..

estava observando que dentro de uma magia aqui, tenho uma função que aparece uma frase quando fala a magia,

  Mostrar conteúdo oculto

 

 

function hats(cid)

if getPlayerLookDir(cid) == 1 then   

                

doCombat(cid, combat1, numberToVariant(cid))

doCombat(cid, combat10, numberToVariant(cid))

doCombat(cid, combat100, numberToVariant(cid))

doPlayerSay(cid, 'teste1', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 2 then   

               

         doCombat(cid, combat4, numberToVariant(cid))

doCombat(cid, combat40, numberToVariant(cid))

doCombat(cid, combat400, numberToVariant(cid))

doPlayerSay(cid, 'teste2!', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 3 then   

                 

         doCombat(cid, combat2, numberToVariant(cid))

doCombat(cid, combat20, numberToVariant(cid))

doCombat(cid, combat200, numberToVariant(cid))

doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 0 then   

                 

         doCombat(cid, combat3, numberToVariant(cid))

doCombat(cid, combat30, numberToVariant(cid))

doCombat(cid, combat300, numberToVariant(cid))

  doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

      end

end

 

 

porém essa função só tem em magia wave, e nela pra cada lado dá pra configurar uma fala diferente, quero colocar isso em poder que seja target

então tentei colocar parte dela depois do ultimo onCastSpell

ficando assim

  Ocultar conteúdo

 

até aí dá certo, quando uso a magia ele fala  "teste1!" só que a magia em exhaust continua falando se eu apertar o botão pra soltar ela, tem como colocar essa função pra que o personagem só fale "teste1" quando eu realmente solte a magia?

 

 

tente assim

function onCastSpell(cid, var)doPlayerSay(cid, 'Tsuuga!', TALKTYPE_ORANGE_1) local waittime = 7 -- Tempo de exhaustionlocal storage = 115818if exhaustion.check(cid, storage) thendoPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")return trueend

 

diarmaintD
26 de janeiro de 2017 às 10:35

@Aberos Valeu, certinho aqui.

 

Editado Janeiro 26 por diarmaint

AberosA
26 de janeiro de 2017 às 12:49
Melhor resposta
function onCastSpell(cid, var)  local waittime = 7 -- Tempo de exhaustion  local storage = 115818  if exhaustion.check(cid, storage) then  	doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")  return true  end  doPlayerSay(cid, 'Tsuuga!', TALKTYPE_ORANGE_1)return true end

Tenta usar assim

Editado Janeiro 26 por Aberos

DeadpoolD
26 de janeiro de 2017 às 13:28

Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.